* Qualcomm Technologies, Inc. MSM Camera VFE

Camera VFE device provides the definitions for enabling
the VFE hardware. It also provides the functions for the client
to control the VFE hardware.

=======================
Required Node Structure
=======================
The VFE device is described in one level of the device node.

======================================
First Level Node - CAM VFE device
======================================
Required properties:
- compatible
  Usage: required
  Value type: <string>
  Definition: Should specify the compatibility string for matching the
	driver. e.g. "qcom,vfe480", "qcom,vfe175", "qcom,vfe170", "qcom,vfe175_130",
	"qcom,vfe170_150", "qcom,vfe-lite480", "qcom,vfe-lite175", "qcom,vfe-lite175_130",
	"qcom,vfe-lite170".

- cell-index
  Usage: required
  Value type: <u32>
  Definition: Should specify the hardware index id.

- reg-names
  Usage: required
  Value type: <string>
  Definition: Should specify the name of the register block.

- reg
  Usage: required
  Value type: <u32>
  Definition: Register values.

- interrupt-names
  Usage: Required
  Value type: <string>
  Definition: Name of the interrupt.

- interrupts
  Usage: Required
  Value type: <u32>
  Definition: Interrupt associated with VFE HW.

- regulator-names
  Usage: required
  Value type: <string>
  Definition: Name of the regulator resources for VFE HW.

- xxxx-supply
  Usage: required
  Value type: <phandle>
  Definition: Regulator reference corresponding to the names listed in
	"regulator-names".

- clock-names
  Usage: required
  Value type: <string>
  Definition: List of clock names required for VFE HW.

- clocks
  Usage: required
  Value type: <phandle>
  Definition: List of clocks used for VFE HW.

- clock-rates
  Usage: required
  Value type: <u32>
  Definition: List of clocks rates.

- src-clock-name
  Usage: required
  Value type: <string>
  Definition: Source clock name.

Optional properties:
- clock-names-option
  Usage: optional
  Value type: <string>
  Definition: Optional clock names.

- clocks-option
  Usage: required if clock-names-option defined
  Value type: <phandle>
  Definition: List of optinal clocks used for VFE HW.

- clock-rates-option
  Usage: required if clock-names-option defined
  Value type: <u32>
  Definition: List of clocks rates for optional clocks.

- clock-control-debugfs
  Usage: optional
  Value type: <string>
  Definition: Enable/Disable clk rate control.

- qcom,cam-cx-ipeak:
  Usage: optional
  Value type: <phandle bit>
	phandle - phandle of CX Ipeak device node
	bit     - Every bit corresponds to a client of CX Ipeak
  Definition: CX Ipeak is a mitigation scheme which throttles camera frequency
	if all the clients are running at their respective threshold
	frequencies to limit CX peak current.
	driver in the relevant register.

- scl-clk-names:
  Usage: optional
  Value type: <string>
  Definition: Scalable clock names to identify which clocks needs to update
	along with source clock.

Example:
	qcom,vfe0@acaf000 {
		cell-index = <0>;
		compatible = "qcom,vfe480";
		reg-names = "ife";
		reg = <0xacaf000 0x4000>;
		interrupts = <0 465 0>;
		interrupt-names = "ife";
		vdd-names = "camss-vdd", "ife0-vdd";
		camss-vdd-supply = <&titan_top_gdsc>;
		ife0-vdd-supply = <&ife_0_gdsc>;
		clock-names = "soc_ahb_clk",
			"cpas_ahb_clk",
			"slow_ahb_clk_src",
			"ife_clk",
			"ife_clk_src",
			"ife_csid_clk",
			"ife_csid_clk_src",
			"camnoc_axi_clk",
			"ife_axi_clk",
		clocks = <&clock_camcc CAM_CC_SOC_AHB_CLK>,
			<&clock_camcc CAM_CC_CPAS_AHB_CLK>,
			<&clock_camcc CAM_CC_SLOW_AHB_CLK_SRC>,
			<&clock_camcc CAM_CC_IFE_0_CLK>,
			<&clock_camcc CAM_CC_IFE_0_CLK_SRC>,
			<&clock_camcc CAM_CC_IFE_0_CSID_CLK>,
			<&clock_camcc CAM_CC_IFE_0_CSID_CLK_SRC>,
			<&clock_camcc CAM_CC_CAMNOC_AXI_CLK>,
			<&clock_camcc CAM_CC_IFE_0_AXI_CLK>,
		clock-rates = <0 0 80000000 0 320000000 0 384000000 0 0 0>;
		src-clock-name = "ife_clk_src";
		clock-names-option = "ife_dsp_clk";
		clocks-option = <&clock_camcc CAM_CC_IFE_0_DSP_CLK>;
		clock-rates-option = <600000000>;
		scl-clk-en;
		scl-clk-names = "ife_axi_clk";
		qcom,cam-cx-ipeak = <&cx_ipeak_lm 2>;
		status = "ok";
	};
